package com.czk.springboot.reactive.reactor.flux;

import reactor.core.publisher.Flux;

public class FluxDemo4 {

    public static void main(String[] args) {
        /**
         * 响应式变成的核心：
         * 1 弹珠图
         * 2
         *
         * doOn api的触发时机---
         *
         * doOnNext:每个数据到达的时候触发
         * doOnEach:每个元素（流的数据和信号）到达的时候触发
         * doOnRequest: 消费者请求元素的时候
         * doOnSubscribe: 订阅的时候触发
         * doOnTerminal:流被取消
         * doOnDiscard:流的元素被忽略的时候
         */
        Flux.just(1, 2, 3, 4, 5, 6, 7, 0)
                .doOnNext(e -> System.out.println("元素e===" + e))
                .doOnEach(integerSignal -> System.out.println("流中的元素===" + integerSignal.get()))
                .map(e -> 10 / e) // map之后变成新流
                .doOnError(error -> System.out.println("出错了===" + error)) // 打印流异常
                .doOnNext(e -> System.out.println("元素e===" + e)) // 打印新流的元素
                .subscribe(System.out::println);


    }

}
